RV Script Generator — 操作手册 ← 返回

RV Script Generator — 操作手册

1. 概述

RV Script Generator 是一款基于 GUI 向导的 FIO RV(Reliability & Validation)测试脚本生成工具。它通过 7 步向导引导用户完成配置,自动生成:

适用场景

系统要求

下载路径📁 本地下载

提示:点击按钮将打开网络文件夹,点击即可下载

文件版本格式
RV Script Generator v1.0.zipv1.0ZIP

2. 快速入门(5 分钟上手)

Step 1:新建项目

运行 RV Script Generator.exe,在 New Project 页面输入项目名称,选择输出目录。

Step 2:选择测试类型

进入 Test Type 页面,勾选需要的测试类型(默认全选),可调整 iodepth、runtime、ramp_time、log_avg_msec 参数。

Step 3:选择磁盘

进入 Drive Select 页面,勾选需要测试的磁盘。可选开启分组功能(如每组 6 块盘)。

Step 4:配置风扇

进入 Fan Speed 页面,输入风扇转速百分比(空格分隔),或点击快速预设按钮。

Step 5:选择 IPMI 平台

进入 Fan Control 页面,选择服务器平台,程序自动填入对应的 IPMI 控速和恢复命令。

Step 6:确认并生成

进入 Summary 页面查看所有配置,点击 Generate All 按钮生成脚本。


3. 界面导航

程序顶部有 7 步进度指示器,可点击任意步骤快速跳转:

步骤名称说明
1New Project项目名称与输出路径
2Test Type测试类型选择与 FIO 全局参数
3Drive Select目标磁盘选择与分组
4Fan Speed风扇转速百分比设定
5Fan ControlIPMI 平台与控速命令
6Summary配置总览,检查无误后生成
7Generate手动生成 & Sequential Runner

导航按钮:底部有 < BackNext > 按钮,Summary 页面额外显示 Generate All 按钮。


4. 各页面详细说明

4.1 New Project(新建项目)

字段说明
Project Name项目文件夹名称,不能含有 / \ : * ? " < > |
Output项目根目录路径,默认当前程序所在目录
Browse...浏览选择输出目录
Will create:实时预览完整路径

验证规则:项目名不能为空,不能包含非法字符。


4.2 Test Type(测试类型)

4.2.1 预设测试类型(10 种)

分组测试类型rwbs默认 iodepth默认 runtime
4K Randomrandread-4krandread4k16120s
4K Randomrandwrite-4krandwrite4k16120s
128K Sequentialread-128kread128k16120s
128K Sequentialwrite-128kwrite128k16120s
256K Sequentialread-256kread256k16120s
256K Sequentialwrite-256kwrite256k16120s
64K Sequentialread-64kread64k16120s
64K Sequentialwrite-64kwrite64k16120s
1M Sequentialread-1Mread1M16120s
1M Sequentialwrite-1Mwrite1M16120s

每个测试类型可单独调整参数:

每组右侧有 All / None 快捷按钮。

4.2.2 自定义测试类型

勾选 Custom Test Type 可添加自定义测试,支持配置:

自定义类型没有对应的 FIO 模板文件,生成时会使用最近似模板(write 类 → randwrite-4k,其余 → randread-4k)。

4.2.3 FIO Settings(全局参数覆盖)

勾选 Use Global (override per-test values) 后,所有测试类型统一使用以下全局参数:

参数可选值默认值
iodepth16 / 3216
runtime (s)120 / 300 / 600 / 900120
ramp_time (s)30 / 12030
log_avg_msec1000 / 120001000

4.2.4 FIO Output Case

决定生成的 shell 脚本中 IOPS/BW 提取关键字的大小写:

选项适用平台
lowercase (iops=/bw=)默认输出格式
UPPERCASE (IOPS=/BW=)腾讯 / 云海平台(务必选择此项)

4.2.5 Test Mode

决定 FIO 测试的运行方式:

选项行为
batch (all drives together)一次 FIO 命令测试组内所有盘
per-drive (one by one)逐盘执行 FIO,配置文件名后缀 -sd$i腾讯 / Steelix 平台使用

4.3 Drive Select(磁盘选择)

4.3.1 磁盘范围

支持 130 个磁盘标签:a-z(26)、aa-az(26)、ba-bz(26)、ca-cz(26)、da-dz(26)。

默认全部选中。可通过 Select All / Deselect All 全局切换。

每行右侧有 All / None 按钮快速切换该行。

4.3.2 分组选择 (Group Selection)

勾选 Enable Grouping 并输入每组磁盘数(如 6),可将选中磁盘分为多个测试组。

例如:24 块盘,每组 6 块 → 生成 4 组脚本(每组含独立 .sh 和 FIO 配置)。

分组模式下,输出文件命名为 <test_name>-<组号>.sh

4.4 Fan Speed(风扇转速)

输入空格分隔的 PWM 百分比(0-100),例如:

20 30 40 50 60 70 75 80 85 90 95 100

快速预设

预设转速值
Standard20 30 40 50 60 70 75 80 85 90 95 100
Classic20 30 40 50 60 70 80 90 100
Single 100100
Single 2020

验证规则:至少一个值,每个值 0-100 整数。


4.5 Fan Control(IPMI 平台与风扇控制)

4.5.1 支持平台(10 种)

平台IPMI 命令格式风扇控制器数恢复自动方式
Current IPT (0x3e 0x1f)0x3e 0x1f $j $fan $fan 0 0xff 0xff10循环设定 21 100
Seaking/Machamp (0x30 0xf6)0x30 0xf6 0x0$j $fan $fan 0x036循环设定 20 100
Pokemon (0x30 0xb7)0x30 0xb7 0x4 0xff $fan / 0x30 0xb7 0x5 0xff $fan1复原 + 重启 BMC
Marshadow (0x38 0x41)0x38 0x41 0 $fan 0xff10x38 0x41 4 0 0xff
Kingler (0x2e 0x11)0x2e 0x11 0xa9 0x19 0x00 7 $fan(需先发 preamble)1ipmitool raw 6 2 + mc reset cold
Steelix (0x3e 0xf6)0x3e 0xf6 $j $fan $fan 0x035循环设定 30 30
Yunhai (0x3e 0x31)0x3e 0x31 0x00 $fan(需先发 0x3e 0x2f 0x0110x3e 0x31 0x00 50
U90G5/Poyanghu (0x3e 0x03)0x3e 0x03 0x0$j $fan8循环设定 50
Kunlun/2U42 (0x3e 0x03)0x3e 0x03 $j $fan8循环设定 50
Auto Only (no IPMI)无 IPMI 命令1空(不控速)

4.5.2 自定义命令

切换平台后,Set Fan CommandRestore Auto Command 文本框自动填入预设命令。用户可以手动编辑这两个文本框,修改后会以用户编辑后的版本生成脚本。


4.6 Summary(摘要)

展示项目完整配置概览,包括:

确认无误后点击 Generate All 生成,或点击 Next > 进入最后一页。


4.7 Generate(生成页)

4.7.1 Generate All 回顾

此页面的 Generate All 按钮功能与 Summary 页相同。

4.7.2 Sequential Runner(串行执行器)

用于从已有的多个 .sh 脚本生成统一的 run_all.sh 执行器。

操作步骤

  1. 点击 Browse .sh Files 选择已有的 shell 脚本
  2. 勾选需要包含的脚本
  3. 点击 Generate run_all.sh,选择输出目录
  4. 生成 run_all.sh,按顺序执行选中的脚本(每个脚本之间 sleep 3

5. 生成的文件结构

<Output>/<ProjectName>/
├── randread-4k.sh               # 每个测试类型的 shell 脚本
├── randwrite-4k.sh
├── read-128k.sh
├── write-128k.sh
├── ...
└── test/                        # FIO 配置文件目录
    ├── randread-4k-1-16-85%-none
    ├── randwrite-4k-1-16-85%-none
    ├── read-128k-1-16-85%-none
    ├── write-128k-1-16-85%-none
    └── ...

分组模式下的命名:

├── randread-4k-1.sh             # 第 1 组
├── randread-4k-2.sh             # 第 2 组
└── test/
    ├── randread-4k-1-16-85%-1   # 第 1 组 FIO 配置
    ├── randread-4k-1-16-85%-2   # 第 2 组 FIO 配置
    └── ...

逐盘模式 (per-drive) 下的 FIO 配置命名:

test/
├── randread-4k-1-16-85%-sd$i   # 运行时 $i 替换为盘符
└── ...

6. Shell 脚本执行流程

生成的 .sh 脚本在目标 Linux 服务器上执行,流程如下:

1. 创建结果目录结构
   ├── result/smart/      # S.M.A.R.T 信息
   ├── result/value/      # 解析后的 IOPS/BW 数据
   ├── result/log/        # FIO 原始输出日志
   └── result/dev/sd*/    # 每盘目录

2. 收集测试前 S.M.A.R.T 信息 (smartctl --all)

3. 风扇转速循环 (for fan in <speeds>)
   ├── IPMI 控速命令
   ├── sleep <平台等待时间>
   ├── fio 测试(batch 或 per-drive)
   └── 提取 IOPS/BW 结果

4. 结果后处理
   ├── 合并各风扇转速下的 csv 数据
   └── 提取每盘时序数据

5. 恢复风扇自动控速

6. 收集测试后 S.M.A.R.T 信息

7. 重命名结果目录(附加时间戳)

7. FIO 配置文件说明

FIO 配置文件为标准 FIO job file 格式:

#Config File for randread-4k-1-16-85%-none
[global]
ioengine=libaio
direct=1
buffered=0
rw=randread
bs=4k
numjobs=1
iodepth=16
runtime=120
ramp_time=30
time_based

[sda-randread-4k-1-16-85%-none]
filename=/dev/sda
size=85%
write_bw_log=...
write_iops_log=...
write_lat_log=...
log_avg_msec=1000

生成时会根据用户选择动态修改:


8. IPMI 平台选择参考

服务器型号推荐平台
最新 IPT 服务器Current IPT (0x3e 0x1f)
Seaking / Machamp 平台Seaking/Machamp (0x30 0xf6)
Pokemon 平台Pokemon (0x30 0xb7)
Marshadow / 富士康平台Marshadow (0x38 0x41)
Kingler / 腾讯平台Kingler (0x2e 0x11)
Steelix 平台Steelix (0x3e 0xf6)
云海平台Yunhai (0x3e 0x31)
U90G5 / PoyanghuU90G5/Poyanghu (0x3e 0x03)
昆仑 / 2U42Kunlun/2U42 (0x3e 0x03)
无需 IPMI 控速Auto Only (no IPMI)

平台特定配置提示

平台FIO Output CaseTest Mode
腾讯 / KinglerUPPERCASEper-drive
云海 / YunhaiUPPERCASEbatch
Steelixlowercaseper-drive
其他平台lowercase(默认)batch(默认)

9. 常见问题

Q1:生成时提示 "Template not found"

程序目录下的 test/ 文件夹缺少对应的 FIO 模板文件。模板文件命名规范为 <test_name>-1-16-85%-none。Shell 脚本正常生成,但 FIO 配置文件被跳过。

Q2:如何添加新的 FIO 模板?

test/ 目录下放置新的模板文件,格式参照现有模板(含 [global][sda-xxx] 格式的 section)。

Q3:自定义测试类型找不到模板?

自定义类型没有对应模板,程序自动选择最近似模板:

Q4:风扇转速 100% 的特殊处理

生成的脚本中,当风扇转速为 100 时,会自动替换为 99(if [ ${fan} == 100 ];then fan=99;fi),这是为了适应 FIO 日志的提取逻辑。

Q5:逐盘模式 vs 批量模式

Q6:分组 vs 不分组


10. 最佳实践

  1. 测试前确认平台:向 BMC 团队确认服务器的 IPMI 命令格式是否正确
  2. 腾讯平台特别注意:FIO Output Case 选 UPPERCASE,Test Mode 选 per-drive
  3. 云海平台:FIO Output Case 选 UPPERCASE
  4. 模板更新:如果默认 FIO 参数不满足需求,直接修改 test/ 下的模板文件
  5. 自定义命令:如果预设 IPMI 命令不正确,可在 Fan Control 页面直接编辑文本框
  6. 保留模板目录test/image/ 文件夹须与 .exe 放在同一目录

11. 文件清单

文件/目录说明
RV Script Generator.exe主程序(Windows 可执行文件)
test/FIO 配置文件模板(10 个)
image/RV Script.png程序图标
image/RV_Script_Generator.icoWindows 图标
IPMItool命令大全.txtIPMI 命令参考手册
README.md本操作手册